With the movement of companies from desktop products to cloud-based services, availability and reliability are business critical requirements. Over the lifetime of a cloud service its functionality, usage and scale changes and often involves changes in the data model used to support the cloud service. One technique used to maintain this data for applications of the cloud service is referred to as a Not Only Structured Query Language (NoSQL) database.
NoSQL databases typically do not enforce a schema, but rather rely on the application to enforce a well-defined schema, itself. At some point, however, a schema enforced by the application may no longer fulfill the requirements of an application anymore (e.g., due to updates and so on) and therefore a new schema is designed to support these requirements. In the cloud example above, changing from one schema into another involves multiple components of a worldwide deployment. The old data from a previous schema, for instance, is migrated to the new schema and application servers are made resilient to both models. In a cloud environment, this affects hundreds of database and application servers and may affect millions of users worldwide. Accordingly, conventional techniques to migrate the schema that involve service downtime, data loss while the migration is done, and so on are no longer acceptable, which often prevents a schema change and limits the scalability of those applications of the service.